/***********************************************************************
	filename: 	DaterServerSystem.h
	created:	9/5/2012
	author:		4Ys

	purpose:	Defines interface for main Dater server system class
*************************************************************************/
#ifndef _DaterServerSystem_h_
#define _DaterServerSystem_h_

#include "DaterSingleton.h"

#include <map>
#include <vector>
#include <string>

namespace Dater
{
	/*!
	\brief
		An entity class contains 21 year calendars front and back.
	*/
	class ServerSystem : public Singleton<ServerSystem>
	{
	public:
		/*!
		\brief
			a static function to create the server.
		*/
		static ServerSystem& create();

		/*!
		\brief
			a static function to destroy the server.
		*/
		static void destory();

		/*!
		\brief
			a static function to get the server.
		*/
		static ServerSystem& getSingleton(void);

		static ServerSystem* getSingletonPtr(void);

	private:
		ServerSystem(const ServerSystem& obj);
		ServerSystem& operator=(const ServerSystem& obj);

		ServerSystem();

		~ServerSystem(void);

		void createSingletons();

		void destorySingletons();
	};
}

#endif